pdf(file="Figure_2.pdf",width=12,height=8)
par(mar=c(4.1,5,4,1),fig=c(0,.375,0,1))


################# LOAD PACKAGES
library(rstan)
library(rethinking)
library(parallel)
library(binom)

################# LOAD DATA

dataset <- read.csv("Data__current_study.csv")

#################

predict.values <- "NO"

################# SELECT MODEL

model = Model_5

################# GENERAL PARAMETERS

col0= 	rgb(0,0,0,255,max=255)
shade0= rgb(0,0,0,70,max=255) 
col1= 	rgb(255,0,0,255,max=255)
shade1= rgb(255,0,0,70,max=255) 
col2= 	rgb(0,0,255,255,max=255)
shade2= rgb(0,0,255,70,max=255) 
col3= 	rgb(0,153,0,255,max=255)
shade3= rgb(0,153,0,70,max=255) 
col4= 	rgb(204,102,0,255,max=255)
shade4= rgb(204,102,0,70,max=255) 
col5= 	rgb(127,0,255,255,max=255)
shade5= rgb(127,0,255,70,max=255) 
col6= 	rgb(153,150,76,255,max=255)
shade6= rgb(153,150,76,70,max=255) 
col7= 	rgb(216,5,202,255,max=255)
shade7= rgb(75,0,153,70,max=255) 
col8= 	rgb(100,100,100,255,max=255)
shade8= rgb(100,100,100,70,max=255) 

length=30	# Length of vector of predictions, i.e. how many predictions are plotted per line


age.seq0a <- seq( from=min(dataset[dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq1a <- seq( from=min(dataset[dataset$fieldid==1 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==1 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq2a <- seq( from=min(dataset[dataset$fieldid==2 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==2 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq3a <- seq( from=min(dataset[dataset$fieldid==3 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==3 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq4a <- seq( from=min(dataset[dataset$fieldid==4 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==4 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq5a <- seq( from=min(dataset[dataset$fieldid==5 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==5 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq6a <- seq( from=min(dataset[dataset$fieldid==6 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==6 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)

age.seq0b <- seq( from=min(dataset[dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq1b <- seq( from=min(dataset[dataset$fieldid==1 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==1 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq2b <- seq( from=min(dataset[dataset$fieldid==2 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==2 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq3b <- seq( from=min(dataset[dataset$fieldid==3 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==3 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq4b <- seq( from=min(dataset[dataset$fieldid==4 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==4 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq5b <- seq( from=min(dataset[dataset$fieldid==5 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==5 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)
age.seq6b <- seq( from=min(dataset[dataset$fieldid==6 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c), to=max(dataset[dataset$fieldid==6 & dataset$CONDITION_1_1yes==0 & dataset$CONDITION_2_1yes==0,]$age_c) , length.out=length)



################# PLOTTING MODEL ESTIMATES

cexset.title = 1.5
cexset = .9
cexlegend = 1


################# PLOTTING AVERAGE SITE
margins = c(4.1,2.5,2,1)

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
legend(x="topleft", c("Selfish Third Party ", "Prosocial Third Party "), bty="n", lwd = 2, lty=c(1,3), cex=cexlegend, col=col0 , text.col=col0 )
title(main="( A ) Average across sites", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq0a , pred0a_base, lty=1, lwd=2, col=col0)
shade( pred.PI0a_base , age.seq0a, col=shade0)
lines( age.seq0b , pred0b_base, lty=3, lwd=2, col=col0)
shade( pred.PI0b_base , age.seq0b, col=shade0)


################# PLOTTING BERLIN
par(new=T)
par(mar=margins, fig=c(.4,.6,.5,1))

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
title(main="( B ) Berlin", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq1a , pred1a_base, lty=1, lwd=2, col=col1)
shade( pred.PI1a_base , age.seq1a, col=shade1)
lines( age.seq1b , pred1b_base, lty=3, lwd=2, col=col1)
shade( pred.PI1b_base , age.seq1b, col=shade1)


################# PLOTTING LA PLATA
par(new=T)
par(mar=margins, fig=c(.6,.8,.5,1))

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
title(main="( C ) La Plata", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq2a , pred2a_base, lty=1, lwd=2, col=col2)
shade( pred.PI2a_base , age.seq2a, col=shade2)
lines( age.seq2b , pred2b_base, lty=3, lwd=2, col=col2)
shade( pred.PI2b_base , age.seq2b, col=shade2)
par(mfg=c(4,1))


################# PLOTTING PHOENIX
par(new=T)
par(mar=margins, fig=c(.8,1,.5,1))

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
title(main="( D ) Phoenix", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq3a , pred3a_base, lty=1, lwd=2, col=col3)
shade( pred.PI3a_base , age.seq3a, col=shade3)
lines( age.seq3b , pred3b_base, lty=3, lwd=2, col=col3)
shade( pred.PI3b_base , age.seq3b, col=shade3)


################# PLOTTING PUNE
par(new=T)
par(mar=margins, fig=c(.4,.6,0,.5))

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
title(main="( E ) Pune", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq4a , pred4a_base, lty=1, lwd=2, col=col4)
shade( pred.PI4a_base , age.seq4a, col=shade4)
lines( age.seq4b , pred4b_base, lty=3, lwd=2, col=col4)
shade( pred.PI4b_base , age.seq4b, col=shade4)


################# PLOTTING SHUAR
par(new=T)
par(mar=margins, fig=c(.6,.8,0,.5))

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
title(main="( F ) Shuar", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq5a , pred5a_base, lty=1, lwd=2, col=col5)
shade( pred.PI5a_base , age.seq5a, col=shade5)
lines( age.seq5b , pred5b_base, lty=3, lwd=2, col=col5)
shade( pred.PI5b_base , age.seq5b, col=shade5)


################# PLOTTING WICHÍ
par(new=T)
par(mar=margins,fig=c(.8,1,0,.5))

plot( dataset$age_c , type="n" , xlab="Age (in years)" , ylab="Prob. of Punishing" , axes=FALSE, ylim=c(0,1), xlim=c(min(dataset$age_c),max(dataset$age_c)+.2), cex.lab=cexset )
title(main="( G ) Wichí", cex.main=cexset.title, sub="", cex.sub=cexset)
axis(1, at=(seq(4,16,by=(2))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=seq(4,16,by=(2)), cex.axis=cexset)    
axis(1, at=(seq(4,16,by=(1))-mean(dataset$AGE_in_years))/sd(dataset$AGE_in_years), lab=FALSE, cex.axis=cexset)    
axis(2, at=seq(0,1,by=(.5)), lab=seq(0,1,by=(.5)), cex.axis=cexset)   
lines( age.seq6a , pred6a_base, lty=1, lwd=2, col=col6)
shade( pred.PI6a_base , age.seq6a, col=shade6)
lines( age.seq6b , pred6b_base, lty=3, lwd=2, col=col6)
shade( pred.PI6b_base , age.seq6b, col=shade6)

dev.off()
